package cn.gson.springboot.model.service.privilegeservice;

import cn.gson.springboot.model.dao.privilegedao.EmpDao;
import cn.gson.springboot.model.mapper.privilegemapper.EmpMapper;
import cn.gson.springboot.model.pjos.Dept;
import cn.gson.springboot.model.pjos.Emp;
import cn.gson.springboot.model.pjos.Position;
import cn.gson.springboot.model.vo.privilegevo.DepartmentVo;
import cn.gson.springboot.model.vo.privilegevo.DeptVo;
import cn.gson.springboot.model.vo.privilegevo.FirstPost;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * 员工管理的service
 */
@Service
@Transactional
public class EmpService {
    @Autowired
    EmpMapper empMapper;//注入员工mapper

    @Autowired
    EmpDao empDao;//注入员工dao

    /*查询所有部门*/
    public List<Dept> depts(){
        return  empMapper.depts();
    }
    /**根据部门查询出对应的角色 */
    public List<Position> positions(int deptId){
        List<Position> positionList = empMapper.positions(deptId);
            return positionList;
    }
    public FirstPost isFirstPost(Integer deptId){
        return empMapper.isFirstPost(deptId);
    }
    /*新增或修改员工*/
    public void saveEmp(Emp emp){
        if(emp.getEmployeesId()==0){
            emp.setEmpImgpath("https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png");
            emp.setEmpPwd("r1ThEqAQooVzZFGoG2gIjg==");//用户初始化密码
            emp.setEmpDelete(1);
            emp.setEmpDate(new Timestamp(new Date().getTime()));
        }else{
            Emp employee = queryOneEmp(emp.getEmployeesId());
            emp.setEmpPwd(employee.getEmpPwd());
            emp.setEmpImgpath(employee.getEmpImgpath());
            emp.setEmpDate(employee.getEmpDate());
            emp.setEmpDelete(employee.getEmpDelete());
        }
        empDao.save(emp);
    }
    /**查询所有员工*/
    public List<DepartmentVo> selectEmp(String empName){
        return empMapper.selectEmp(empName);
    }

    /**查询员工信息*/
    public Emp queryOneEmp(int employeeId){
        return empMapper.queryOneEmp(employeeId);
    }
    /**查询员工名称是否存在*/
    public int  isNoEmp(String empName){
       Integer empId= empMapper.isNoEmp(empName);
        if (empId !=null){
            return 1;//返回1，用户名称存在
        }else {
            return 0;//返回0，用户名称不存在
        }

    }

    /**修改员工的状态*/
    public void updateEmpStatus(Integer employeesId,String empIsNot){
        Emp emp=empDao.findById(employeesId).get();
        emp.setEmpIsNot(empIsNot);
        empDao.save(emp);
    }
    /**删除员工*/
    public void deleteEmp(Integer empId){
        Emp emp = empDao.findById(empId).get();
        emp.setEmpDelete(0);
        empDao.save(emp);
        empMapper.delete_emp_position(empId);//回收用户角色
    }

    /**
     * 验证联系电话是否重复
     * @param phone
     * @return
     */
    public  int phone(String phone){
        Emp emp = empDao.phone(phone);
        if(emp == null){
            return  0;//不存在重复
        }else{
            return 1;//存在重复
        }

    }

    /**
     *验证身份证号是否重复
     * @param card
     * @return
     */
    public  int card(String card){
        Emp emp = empDao.card(card);
        if(emp == null){
            return 0;
        }else{
            return 1;
        }
    }
}
